package com.sunwhite.codeidea.reflect.demo;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class Demo {
	public static void main(String[] args) throws Exception {
		//读取配置文件
//		BufferedReader br = new BufferedReader(new FileReader("config.txt"));
		String classpath = "com.sunwhite.codeidea.reflect.demo.Person";

		//根据读到的类路径创建对象
		Class clazz = Class.forName(classpath);
		//用反射的方式便捷的创建一个类的实例  依赖的是无参的构造方法
		Object obj = clazz.newInstance();//实例化不了  Person类里面没有无参的构造方法了

		System.out.println(obj);

		Constructor[] constructors = clazz.getConstructors();//获取构造方法
		constructors[0].newInstance();//使用构造对象创建实例

		Field[] fields = clazz.getFields();
		Field name = clazz.getField("name");
		name.set(obj,"张三");

		Method[] methods = clazz.getMethods();
		Method toString = clazz.getMethod("toString");
		toString.invoke(obj);

		Field[] declaredFields = clazz.getDeclaredFields();

//		Person  p = new Person();//类 ---对象   汽车的设计图纸   ----汽车
	}
}
